package com.yifi.common.utils;

import com.yifi.common.model.PositionModel;

/**
 * 
 * @author yao
 *2020-04-29
 */
public class GPSUtils {

	/// <summary>
    /// 根据一个给定经纬度的点和距离，进行附近地点查询
    /// </summary>
    /// <param name="longitude">经度</param>
    /// <param name="latitude">纬度</param>
    /// <param name="distance">距离（单位：公里或千米）</param>
    /// <returns>返回一个范围的4个点，最小纬度和纬度，最大经度和纬度</returns>
    public static PositionModel FindNeighPosition(double longitude, double latitude, double distance)
    {
        //先计算查询点的经纬度范围  
        double r = 6378.137;//地球半径千米  
        double dis = distance;//千米距离    
        double dlng = 2 * Math.sin(Math.sin(dis / (2 * r)) / Math.cos(latitude * Math.PI / 180));
        dlng = dlng * 180 / Math.PI;//角度转为弧度  
        double dlat = dis / r;
        dlat = dlat * 180 / Math.PI;
        double minlat = latitude - dlat;
        double maxlat = latitude + dlat;
        double minlng = longitude - dlng;
        double maxlng = longitude + dlng;
        return new PositionModel(maxlng,maxlat,minlng,minlat);
    }
}
